import { defineStore } from 'pinia'
import { store } from "@/store"
import projectSetting from '@/settings/projectSetting'

const {
    navMode,
    navTheme,
    headerSetting,
    showFooter,
    menuSetting,
    multiTabsSetting,
    crumbsSetting,
    permissionMode
} = projectSetting

interface ProjectSettingState {
    navMode: string,//导航模式
    navTheme: string,//导航风格
    headerSetting: object,//顶部设置
    showFooter: boolean, //页脚
    menuSetting: object, //多标签
    multiTabsSetting: object,//多标签
    crumbsSetting: object,//面包屑
    permissionMode: string//权限模式
}

export const useProjectSettingStore = defineStore({
    id: 'app-project-setting',
    state: (): ProjectSettingState => ({
        navMode: navMode,
        navTheme,
        headerSetting,
        showFooter,
        menuSetting,
        multiTabsSetting,
        crumbsSetting,
        permissionMode
    }),
    getters: {
        getNavMode(): string {
            return this.navMode;
        },
        getNavTheme(): string {
            return this.navTheme;
        },
        getHeaderSetting(): object {
            return this.headerSetting
        },
        getShowFooter(): boolean {
            return this.showFooter
        },
        getMenuSetting(): object {
            return this.menuSetting
        },
        getMultiTabsSetting(): object {
            return this.multiTabsSetting
        },
        getCrumbsSetting(): object {
            return this.multiTabsSetting
        },
        getPermissionMode(): string {
            return this.permissionMode
        }
    },
    actions: {
        setNavTheme(value: string): void {
            this.navTheme = value
        },
    }
})

// Need to be used outside the setup
export function useProjectSettingStoreWithOut() {
    return useProjectSettingStore(store);
}
